package com.algorithm;

import java.util.Stack;
//用两个栈实现队列
//栈为先进后出
//队列为先进先出
/**
 * 实现思路:先将 1、2数据压入栈1中（此时栈1中的数据顺序为 2,1），再取数据的时候第一次将栈1中的数据全部压入栈2中（此时栈2中的数据顺序为 1,2）
 * ，再依次取出栈2中的数据。
 * 当栈1中新压入数据并且此时栈2数据还没有出完，就继续取出栈2的数据，直至栈2 数据取完后，再取数据时再次将栈1 所有数据压入栈2
 */
public class StackCreateQueue {
    static Stack<Integer> stack1 = new Stack<Integer>();
    static Stack<Integer> stack2 = new Stack<Integer>();

    public static void main(String[] args) {
        push(1);
        push(2);
        System.out.println(pop() + "");
        push(3);
        push(4);
        System.out.println(pop() + "");
        System.out.println(pop() + "");
        System.out.println(pop() + "");
    }


    public static void push(int node) {
        stack1.push(node);
    }

    public static int pop() {
        //第一次pop将有数据的栈中的数据全部压入没有数据的栈中
        if (stack2.empty()) {
            while (!stack1.empty()) {
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }
}
